import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** 订单信息 */
export interface Order {
          id: number; // ID
          userId?: number; // 用户ID
          orderNo?: string; // 订单编号
          coachId: number; // 教练ID
          attendClassDate?: string | Dayjs; // 上课日期
          venueId?: number; // 上课地点ID
          venueName?: number; // 上课地点名称
          servicePId?: number; // 服务一级分类ID
          servicePName?: string; // 服务一级分类名称
          serviceId?: number; // 服务二级分类ID
          serviceName?: string; // 服务二级分类名称
          startTime?: localtime; // 开始时间
          peopleCount?: string; // 教学人数（字典：business_coach_service_people_count）
          serviceTime?: string; // 教学时间（字典：business_coach_service_time）
          snowboardType: string; // 雪板类型（字典：business_snowboard_type）
          businessGlidingLevel: string; // 滑行水平（字典：business_gliding_level）
          nickname?: string; // 用户昵称
          mobile?: string; // 联络手机号
          remark: string; // 备注
          estimatedAmount?: number; // 预估价格（单位分）
          paymentAmount: number; // 实付金额（单位分）
          profitAmount?: number; // 预估收益（单位分）根据实付金额计算
          profitArrivalTime: string | Dayjs; // 收益到账时间
          orderTime?: string | Dayjs; // 下单时间
          paymentStatus: boolean; // 支付状态（0待支付；1已支付）
          paymentTime: string | Dayjs; // 支付时间
          receivedTime: string | Dayjs; // 接单时间
          cancelTime: string | Dayjs; // 取消时间
          cancelType: number; // 取消类型（0未取消；1系统自动取消；2用户取消；3教练取消）
          attendClassTime: string | Dayjs; // 上课时间
          attendClassImages: string; // 上课图片
          orderType?: boolean; // 订单类型（0一键约课；1直选教练约课）类型为 1 的，若教练不接单，则自动取消订单，并退款
          status?: number; // 订单状态（0待接单；1已取消；2待上课；3待确认；4已完成）
          refundStatus?: number; // 退款状态（0未退款；1退款中；2已到账）
          refundOrderNo: string; // 退款单号
          refundTime: string | Dayjs; // 退款时间
          refundArrivalTime: string | Dayjs; // 退款到账时间
  }

// 订单 API
export const OrderApi = {
  // 查询订单分页
  getOrderPage: async (params: any) => {
    return await request.get({ url: `/business/order/page`, params })
  },

  // 查询订单详情
  getOrder: async (id: number) => {
    return await request.get({ url: `/business/order/get?id=` + id })
  },

  // 新增订单
  createOrder: async (data: Order) => {
    return await request.post({ url: `/business/order/create`, data })
  },

  // 修改订单
  updateOrder: async (data: Order) => {
    return await request.put({ url: `/business/order/update`, data })
  },

  updateOrderAmount: async (data: Order) => {
    return await request.put({ url: `/business/order/update/amount`, data })
  },

  updateOrderAttendClass: async (data: Order) => {
    return await request.put({ url: `/business/order/update/attend-class`, data })
  },

  orderCancel: async (id:number) => {
    return await request.put({ url: `/business/order/update/cancel/` + id })
  },

  // 删除订单
  deleteOrder: async (id: number) => {
    return await request.delete({ url: `/business/order/delete?id=` + id })
  },

  /** 批量删除订单 */
  deleteOrderList: async (ids: number[]) => {
    return await request.delete({ url: `/business/order/delete-list?ids=${ids.join(',')}` })
  },

  // 导出订单 Excel
  exportOrder: async (params) => {
    return await request.download({ url: `/business/order/export-excel`, params })
  },
}
